package com.whfc.emp.service;


import com.whfc.common.exception.BizException;
import com.whfc.common.result.PageData;
import com.whfc.emp.dto.AppEmpDTO;
import com.whfc.emp.dto.AppTrainDTO;
import com.whfc.emp.dto.AppTrainEmpDTO;
import com.whfc.emp.dto.TrainEmpDTO;
import com.whfc.emp.param.*;

import java.util.List;

/**
 * @ClasssName AppTrainService
 * @Description 人员管理-培训
 * @Author hw
 * @Date 2020/11/26 16:09
 * @Version 1.0
 */
public interface AppTrainService {

    /**
     * 人员管理-培训列表
     *
     * @param request
     * @return
     * @throws BizException
     */
    PageData<AppTrainDTO> list(AppTrainListParam request) throws BizException;

    /**
     * 查询人员培训列表
     *
     * @param empId
     * @param pageNum
     * @param pageSize
     * @return
     * @throws BizException
     */
    PageData<AppTrainEmpDTO> list(Integer empId, Integer pageNum, Integer pageSize) throws BizException;

    /**
     * 人员管理-新增培训
     *
     * @param request
     * @throws BizException
     */
    void add(AppTrainAddParam request) throws BizException;

    /**
     * 人员管理-编辑培训
     *
     * @param request
     * @throws BizException
     */
    void edit(AppTrainEditParam request) throws BizException;

    /**
     * 人员管理-删除培训
     *
     * @param trainId
     * @throws BizException
     */
    void del(Integer trainId) throws BizException;

    /**
     * 人员管理-完成培训
     *
     * @param trainId
     * @throws BizException
     */
    void complete(Integer trainId) throws BizException;

    /**
     * 人员管理-培训人员列表
     *
     * @param request
     * @return
     * @throws BizException
     */
    PageData<AppTrainEmpDTO> trainEmpList(AppTrainEmpListParam request) throws BizException;

    /**
     * 人员管理-添加培训人员
     *
     * @param request
     * @throws BizException
     */
    void trainEmpAdd(AppTrainEmpAddParam request) throws BizException;

    /**
     * 人员管理-删除培训人员
     *
     * @param request
     * @throws BizException
     */
    void trainEmpDel(AppTrainEmpDelParam request) throws BizException;

    /**
     * 人员管理-添加修改培训分数
     *
     * @param request
     * @throws BizException
     */
    void score(AppTrainScoreParam request) throws BizException;

    /**
     * 获取可添加的培训人员列表
     *
     * @param pageNum
     * @param pageSize
     * @param trainId
     * @param keyword
     * @param groupId
     * @return
     * @throws BizException
     */
    PageData<AppEmpDTO> getEmpList(Integer pageNum, Integer pageSize, Integer trainId, String keyword, Integer groupId) throws BizException;

    /**
     * 保存签名图片
     *
     * @param trainEmpId 培训人员ID
     * @param signImgUrl 签名图片地址
     * @throws BizException 业务异常
     */
    void saveSignImg(Integer trainEmpId, String signImgUrl) throws BizException;

    /**
     * 保存培训人员图片
     *
     * @param trainEmpId 培训人员ID
     * @param imgUrlList 培训人员图片
     * @throws BizException 业务异常
     */
    void saveTrainEmpImg(Integer trainEmpId, List<String> imgUrlList) throws BizException;


    /**
     * 处理同步失败的同步记录
     *
     * @throws BizException 业务异常
     */
    void handleFailedData() throws BizException;

    /**
     * 获取培训人员信息
     *
     * @param trainEmpId 培训记录人员ID
     * @return 培训人员信息
     * @throws BizException 业务异常
     */
    TrainEmpDTO getTrainEmpInfo(Integer trainEmpId) throws BizException;

}
